package hotciv.factories;

import hotciv.common.*;
import hotciv.strategies.*;
import hotciv.variants.*;

public class EpsilonCivFactory implements AbstractFactory {
	
	DieRoller dieRoller = new RandomDieRoller();
	
	@Override
	public WinnerStrategy createWinnerStrategy() {
		return new EpsilonCivWinnerStrategy();
	}

	@Override
	public AgingStrategy createAgingStrategy() {
		return new AlphaCivAgingStrategy();
	}

	@Override
	public LayoutStrategy createLayoutStrategy() {
		return new AlphaCivLayoutStrategy();
	}

	@Override
	public UnitActionStrategy createUnitActionStrategy() {
		return new AlphaCivUnitActionStrategy();
	}

	@Override
	public MoveUnitStrategy createMoveUnitStrategy() {
		return new AlphaCivMoveUnitStrategy();
	}

	@Override
	public AttackStrategy createAttackStrategy() {
		return new EpsilonCivAttackStrategy(dieRoller);
	}
	
	
	/**
	 * Change the die roller.
	 * @param dieRoller - the die roller to use for this game instance
	 */
	public void setDieRoller(DieRoller dieRoller) {
		this.dieRoller = dieRoller;
	}

}
